[IA64] Fix save/restore bug
authorawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Mon, 12 Feb 2007 17:10:37 +0000 (10:10 -0700)
committerawilliam@xenbuild2.aw <awilliam@xenbuild2.aw>
Mon, 12 Feb 2007 17:10:37 +0000 (10:10 -0700)
DCR.dm fix, in case v->arch.privregs is NULL

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
xen/arch/ia64/linux-xen/setup.c
xen/arch/ia64/xen/domain.c

index 548419b9669e8194f47acf682eff8f9c428ffb3c..c7744eddd45a21d3f098ac468825aaf6fcb92600 100644 (file)
@@ -862,8 +862,7 @@ cpu_init (void)
         * be fine).
         */
 #ifdef XEN
-       ia64_setreg(_IA64_REG_CR_DCR,  (  IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | IA64_DCR_DR
-                         | IA64_DCR_PP | IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC));
+       ia64_setreg(_IA64_REG_CR_DCR, IA64_DEFAULT_DCR_BITS);
 #else
        ia64_setreg(_IA64_REG_CR_DCR,  (  IA64_DCR_DP | IA64_DCR_DK | IA64_DCR_DX | IA64_DCR_DR
                                        | IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC));
index 9c21d0294955a38a10be87f8e6166d989507b59d..c786a9d6e88937fd2d97753f1eba28246ac9889b 100644 (file)
@@ -581,7 +581,7 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c)
                er->dtrs[i].rid = v->arch.dtrs[i].rid;
        }
        er->event_callback_ip = v->arch.event_callback_ip;
-       er->dcr = PSCB(v,dcr);
+       er->dcr = v->arch.privregs ? PSCB(v,dcr) : 0;
        er->iva = v->arch.iva;
 }
 
@@ -617,7 +617,6 @@ int arch_set_info_guest(struct vcpu *v, vcpu_guest_context_u c)
                                     er->dtrs[i].rid);
                }
                v->arch.event_callback_ip = er->event_callback_ip;
-               PSCB(v,dcr) = er->dcr;
                v->arch.iva = er->iva;
        }